/*
 * Namable.h
 *
 *  Created on: 08.06.2012
 *      Author: sebastian
 */

#ifndef NAMABLE_H_
#define NAMABLE_H_


#include <string>
#include <map>

class Namable {
private:
	std::string name_;
	//TODO: make it static!

	static int idCount_;

public:
	Namable() {};
	Namable(std::string const & name);
	virtual ~Namable();

	// changing should not be possible...
	// would cause a lot of problems if you think about it
	// void setName(std::string const & name);
	std::string getName() const;

	static int getUniqueId();
};

extern std::map<std::string, Namable*> objects_;

#endif /* NAMABLE_H_ */
